﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Indie_Game_Contest
{
    class MessageSystem
    {
        //////////////////////////////////////////////////////////////////////////
        // Data Members
        static MessageSystem instance = new MessageSystem();
        Queue<IMessage> messages = new Queue<IMessage>();

        public delegate void MessageProc(IMessage nMsg);
        MessageProc msgProc = null;

        //////////////////////////////////////////////////////////////////////////
        // Methods
        private MessageSystem() { }

        public void SendMessage(IMessage msg)
        {
            messages.Enqueue(msg);
        }
        public void ProcessMessages()
        {
            while (messages.Count > 0)
            {
                IMessage msg = messages.Dequeue();

                msgProc(msg);
            }
        }
        public void Dispose()
        {
            messages.Clear();
        }

        //////////////////////////////////////////////////////////////////////////
        // Properties
        public static Indie_Game_Contest.MessageSystem Instance
        {
            get { return instance; }
        }
        public MessageProc MsgProc
        {
            set { msgProc = new MessageProc(value); }
        }
    }
}
